package sistkaraoke.negocio;

import java.util.Collection;

import sistkaraoke.dao.IReservaDAO;
import sistkaraoke.dao.ISalaDAO;
import sistkaraoke.dao.ReservaDAO;
import sistkaraoke.dao.SalaDAO;
import sistkaraoke.excepcion.DAOExcepcion;
import sistkaraoke.modelo.Administrador;
import sistkaraoke.modelo.Cliente;
import sistkaraoke.modelo.IAdministrador;
import sistkaraoke.modelo.ICliente;
import sistkaraoke.modelo.ILocal;
import sistkaraoke.modelo.IReserva;
import sistkaraoke.modelo.ISala;
import sistkaraoke.modelo.Local;
import sistkaraoke.modelo.Reserva;
import sistkaraoke.modelo.Sala;

public class GestionReserva implements IGestionReserva{

	public int insertar(String descripcion, int idSala, int idCliente) throws DAOExcepcion {
		
		IReservaDAO dao = new ReservaDAO();
		IReserva vlReserva=new Reserva();
		
		vlReserva.setDescripcion(descripcion);
		
		ISala vlSala= new Sala();
		vlSala.setId(idSala);
		vlReserva.setSala(vlSala);
		
		ICliente vlCliente=new Cliente();
		vlCliente.setIdcliente(idCliente);
		vlReserva.setCliente(vlCliente);
	
		return dao.insertar(vlReserva);
	}
	
	
	public int actualizar(int idReserva, String descripcion, int idSala,
			int idCliente) throws DAOExcepcion {

		IReservaDAO dao = new ReservaDAO();
		IReserva vlReserva=new Reserva();
		
		vlReserva.setId(idReserva);
		vlReserva.setDescripcion(descripcion);
		
		ISala vlSala= new Sala();
		vlSala.setId(idSala);
		vlReserva.setSala(vlSala);
		
		ICliente vlCliente=new Cliente();
		vlCliente.setIdcliente(idCliente);
		vlReserva.setCliente(vlCliente);
	
		return dao.actualizar(vlReserva);
		
	}


	public int eliminar(int idReserva) throws DAOExcepcion {
		IReservaDAO dao = new ReservaDAO();
	
		return dao.eliminar(idReserva);
	}

	
	public Collection<IReserva> buscarPorDescripcion(String descripcion) throws DAOExcepcion{
		
		IReservaDAO dao = new ReservaDAO();
		
		IReserva vlReserva = new Reserva();
		vlReserva.setId(0);
		vlReserva.setDescripcion(descripcion);
		
		ISala vlSala=new Sala();
		vlSala.setId(0);
		vlReserva.setSala(vlSala);
		
		ICliente vlCliente = new Cliente();
		vlCliente.setIdcliente(0);
		vlReserva.setCliente(vlCliente);
		
		return dao.buscar(vlReserva);
		
	}


	public Collection<IReserva> buscarPorSala(int idsala) throws DAOExcepcion{
		
		IReservaDAO dao = new ReservaDAO();
		
		IReserva vlReserva = new Reserva();
		vlReserva.setId(0);
		vlReserva.setDescripcion("");
		
		ISala vlSala= new Sala();
		vlSala.setId(idsala);
		
		ICliente vlCliente = new Cliente();
		vlCliente.setIdcliente(0);
		
		vlReserva.setSala(vlSala);
		vlReserva.setCliente(vlCliente);
		
		return dao.buscar(vlReserva);
	}
	
	public Collection<IReserva> buscarPorCliente(int idcliente) throws DAOExcepcion{
		
		IReservaDAO dao = new ReservaDAO();
		
		IReserva vlReserva = new Reserva();
		vlReserva.setId(0);
		vlReserva.setDescripcion("");
		
		ISala vlSala= new Sala();
		vlSala.setId(0);
		
		ICliente vlCliente = new Cliente();
		vlCliente.setIdcliente(idcliente);
		
		vlReserva.setSala(vlSala);
		vlReserva.setCliente(vlCliente);
		
		return dao.buscar(vlReserva);
	}
	

	public Collection<IReserva> listar(int idAdministrador) throws DAOExcepcion{

		IReservaDAO dao = new ReservaDAO();
		
		IReserva vlReserva = new Reserva();
		vlReserva.setId(0);
		vlReserva.setDescripcion("");
		
		ISala vlSala= new Sala();
		vlSala.setId(0);
		
		ILocal vlLocal = new Local();
		vlLocal.setId(0);
		
		IAdministrador vlAdministrador = new Administrador();
		
		vlAdministrador.setId(idAdministrador);
		
		vlLocal.setAdministrador(vlAdministrador);
		
		vlSala.setLocal(vlLocal);
		
		ICliente vlCliente = new Cliente();
		vlCliente.setIdcliente(0);
		
		vlReserva.setSala(vlSala);
		vlReserva.setCliente(vlCliente);
		
		return dao.buscar(vlReserva);
		
	}

	
	public IReserva obtener(int idreserva) throws DAOExcepcion{
		
		IReservaDAO dao = new ReservaDAO();
		
		IReserva vlReserva = new Reserva();
		vlReserva.setId(idreserva);
		vlReserva.setDescripcion("");
		
		ISala vlSala = new Sala();
		vlSala.setId(0);
		
		ICliente vlCliente = new Cliente();
		vlCliente.setIdcliente(0);
		
		vlReserva.setSala(vlSala);
		vlReserva.setCliente(vlCliente);
		
		Collection<IReserva> cIReserva = dao.buscar(vlReserva);
		
				
		if(cIReserva.size() > 0)
		{
			for (IReserva reserva : cIReserva)
			{
				vlReserva = new Reserva();
				vlReserva.setId(idreserva);
				vlReserva.setDescripcion(reserva.getDescripcion());
				vlSala= new Sala();
				vlSala.setId(reserva.getSala().getId());
				vlSala.setNombre(reserva.getSala().getNombre());
				vlCliente=new Cliente();
				vlCliente.setIdcliente(reserva.getCliente().getIdcliente());
				vlCliente.setDni(reserva.getCliente().getDni());
				vlReserva.setSala(vlSala);
				vlReserva.setCliente(vlCliente);
								
			}
		}
		else
			vlReserva = null;
		
		return vlReserva;
	}


	
	
	
}
